package com.rzcf.blink.pay.api.model;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @author: dongsufeng
 * @date: 2025/7/12$ 15:27$
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "订单返回详情")
public class OrderRespDTO implements Serializable {

    /**
     * 订单号码
     */
    @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
    private String orderNo;

    /**
     * 外部订单号
     */
    private String outOrderNo;

    /**
     * 订单类型 1-普通订单 2-换货订单 3-转提订单
     */
    private Integer orderType;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 小程序用户openId
     */
    private String openId;

    /**
     * 渠道ID
     */
    private Long channelId;

    /**
     * 分销商ID
     */
    private Long distributorId;

    /**
     * 订单金额(分)
     */
    private BigDecimal price;
    /**
     * 实际支付金额
     */
    private BigDecimal actualAmount;
    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;
    /**
     * 支付方式
     */
    private Integer paymentType;

    /**
     * 支付时间
     */
    private LocalDateTime payTime;

    /**
     * 支付状态(0-未支付;1-已支付;2-支付失败;3-已退款;4-已关闭
     */
    private Integer orderPayStatus;

    /**
     * 订单状态
     */
    private String orderStatus;

    /**
     * 来源平台
     */
    private String outPlatform;

    /**
     * 店铺配置的ID,用于电商店铺关联
     */
    private Long shopConfigId;

    /**
     * 网页ID
     */
    private Long packageId;

    /**
     * 产品ID
     */
    private Long productId;

    /**
     * 备注
     */
    private String remark;

    /**
     * 订单旗帜颜色
     */
    private String orderFlagColors;

    /**
     * 打印状态(not_to_print-未打印;generate_print_data-已生成打印数据;have_to_print-已打印)
     */
    private String orderPrintStatus;

    /**
     * 推广人员id
     */
    private Long promotersId;

    /**
     * 推广人员
     */
    private String promoters;

    /**
     * 分配来源 0-自营，1-分销
     */
    private Integer distributionSource;

    /**
     * 重提前订单号
     */
    private String originalOrderNo;

    /**
     * 订单转提类型 0-正常，1-系统转提订单，2-人工处理订单
     */
    private Integer transferOrderType;

    /**
     * 转提规则历史版本号
     */
    private Long transferRuleVersion;

    /**
     * 创建者
     */
    private String createBy;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新者
     */
    private String updateBy;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
}
